package es.udc.fbellas.j2ee.tiendaweb.model.productofacade.TO;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import es.udc.fbellas.j2ee.tiendaweb.model.categoria.DAO.SQLCategoriaDAO;
import es.udc.fbellas.j2ee.tiendaweb.model.categoria.DAO.SQLCategoriaDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.categoria.TO.CategoriaTO;
import es.udc.fbellas.j2ee.tiendaweb.model.producto.TO.ProductoTO;
import es.udc.fbellas.j2ee.tiendaweb.model.propiedad.DAO.SQLPropiedadDAO;
import es.udc.fbellas.j2ee.tiendaweb.model.propiedad.DAO.SQLPropiedadDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.propiedad.TO.PropiedadTO;
import es.udc.fbellas.j2ee.tiendaweb.model.util.GlobalNames;
import es.udc.fbellas.j2ee.util.exceptions.InternalErrorException;
import es.udc.fbellas.j2ee.util.sql.DataSourceLocator;

public class ProductoCustomTO implements Serializable{
	private ProductoTO productoTO;
	private CategoriaTO categoriaTO;
	private List<PropiedadTO> listaPropiedades;
	
	public ProductoCustomTO(ProductoTO productoTO)
	throws InternalErrorException, SQLException
	{
		Connection connection = getDataSource().getConnection();
		this.productoTO = productoTO;
		SQLCategoriaDAO categoriaDAO = SQLCategoriaDAOFactory.getDAO();
		categoriaTO = categoriaDAO.find(connection, productoTO.getIdCategoria());
		SQLPropiedadDAO propiedadDAO = SQLPropiedadDAOFactory.getDAO();
		listaPropiedades = propiedadDAO.findbyproducto(connection, productoTO.getIdProducto(), 1, 1000000);
	}
	public CategoriaTO getCategoriaTO() {
		return categoriaTO;
	}
	public List<PropiedadTO> getListaPropiedades() {
		return listaPropiedades;
	}
	public ProductoTO getProductoTO() {
		return productoTO;
	}
    private DataSource getDataSource() throws InternalErrorException {
        return DataSourceLocator.getDataSource(
            GlobalNames.TIENDAWEB_DATA_SOURCE);
    }
    public String toString(){
    	return new String("productoCustomTOs = " + productoTO + " | Categoría = " + categoriaTO + 
    			" | Propiedades = " + listaPropiedades);
    }


}
